#pragma once
#include "server.h"
#include <stdbool.h>

#define BWL_NR_LAYERS (4)

typedef struct Output {
    struct wl_list link; /* server.outputs */
    struct Server *server;
    struct wlr_output *wlr_output;
    struct wlr_scene_output *scene_output;
    struct wlr_scene_tree *layer_tree[BWL_NR_LAYERS];
    struct wlr_scene_tree *layer_popup_tree;
    struct wlr_scene_tree *osd_tree;
    struct wlr_scene_tree *session_lock_tree;
    struct wlr_scene_buffer *workspace_osd;
    struct wlr_box usable_area;

    struct wl_list regions;  /* struct region.link */

    struct lab_data_buffer *osd_buffer;

    struct wl_listener destroy;
    struct wl_listener frame;
    struct wl_listener request_state;

    bool leased;
    bool gamma_lut_changed;
} Output;

void output_init(Server *server);
